

package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.Contramarca;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 */

public class ContramarcaDAO extends GenericSAPDAO {
    private List<Contramarca> misContramarcas;
    
    //Constructores   
    public ContramarcaDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("TI_ZCLCONTRAM");
        super.setMyTable(aFunction);
        this:misContramarcas = new ArrayList();
    }

    //Getters & Setters
    public List<Contramarca> getMisContramarcas() {
        return misContramarcas;
    }

    //Metodos privados
    /**
     * Agrega una "contramarca" a la coleccion "misContramarcas".
     * @param laContramarca
     */
    private void addUnaContramarca(Contramarca laContramarca) {
        this.misContramarcas.add(laContramarca);
    }
   
    /**
     * Columnas de Contramarca:
     * MANDT		MANDT		CLNT	3	Mandante
     * ZCONTRAMA	ZZCONTRAMA	CHAR	15	Contramarca de la fruta
     * ZTEXTO	ZDENOMINAC1	CHAR	60	Denominación
     * ZDEFAULT	ZCHKDEFAUL	CHAR	1	check para valores de defecto
     * ZTEXTO_ING	ZDENOMINAC1	CHAR	60	Denominación
     * ZVIA		ZZVIA		CHAR	3	Via de transporte ( 'AER' 'TER' 'MAR' )
     */
    
    //Metodos publicos
    /**
     * Recorre "getMyTable()" de la RFC y por cada registro crea una "contramarca" y lo agrega a "misContramarcas".
     */
    public void findAll() throws SapGeneralException {
        Contramarca contramarca;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            contramarca=new Contramarca(super.getMyTable().getString("ZCONTRAMA"),super.getMyTable().getString("ZTEXTO"),super.getMyTable().getString("ZVIA"),super.getMyTable().getString("ZTEXTO_ING"),((super.getMyTable().getString("ZDEFAULT")).toUpperCase()).equals("X"));
            addUnaContramarca(contramarca);
        }
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
            
        }

    }
    
    /**
     * Solo para las pruebas.
     * Imprime todos los registros de "super.getMyTable()".
     */
    @Override
    public void printAll() {
        System.out.println("MANDT"+'\t'+"ZCONTRAMA"+'\t'+"ZTEXTO"+'\t'+"ZDEFAULT"+'\t'+"ZTEXTO_ING"+'\t'+"ZVIA");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("MANDT") +
            '\t' + super.getMyTable().getString("ZCONTRAMA") + 
            '\t' + super.getMyTable().getString("ZTEXTO") +
            '\t' + super.getMyTable().getString("ZDEFAULT") + 
            '\t' + super.getMyTable().getString("ZTEXTO_ING") + 
            '\t' + super.getMyTable().getString("ZVIA")
            );                
        }        
    }

}
